package root.repositorios;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import root.util.EnumeradorCrescenteHistorico;

/**
 * 
 * Classe que representa um historio de acoes do usuario
 * 
 */
public class HistoricoUsuario {

	private Map<Integer, String> historicoPorCadastro;
	private List<String> meuHistorico;

	public HistoricoUsuario() {
		historicoPorCadastro = new HashMap<Integer, String>();
		meuHistorico = new ArrayList<String>();
	}

	/**
	 * 
	 * @return O historico de atividades individuais do usuario
	 */
	public String historicoAtividades() {
		String allAtividades = "";
		for (String atividade : meuHistorico) {
			allAtividades += atividade + "; ";
		}
		return allAtividades.length() > 0 ? allAtividades.substring(0,
				allAtividades.length() - 2) : "Não há atividades";
	}

	/**
	 * 
	 * @return O historico de atividades do usuario realizadas com outros
	 *         usuarios
	 */
	public String historicoAtividadesConjunto() {
		String allAtividades = "";
		for (String acontecimento : historicoPorCadastro.values()) {
			allAtividades += acontecimento + "; ";
		}
		return allAtividades.length() > 0 ? allAtividades.substring(0,
				allAtividades.length() - 2) : "Não há atividades";
	}

	/**
	 * Adiciona uma atividade ao historio
	 * 
	 * @param atividade
	 *            Atividade a ser adicionada
	 */
	public void addAtividade(String atividade) {
		meuHistorico.add(0, atividade);
		historicoPorCadastro.put(
				EnumeradorCrescenteHistorico.enumeradorHistorico, atividade);
		EnumeradorCrescenteHistorico.incrementaEnumeradorHistorico();
	}

	/**
	 * 
	 * @return Um mapa de historico por cadastro
	 */
	public Map<Integer, String> getHistoricoPorCadastro() {
		return this.historicoPorCadastro;
	}

	/**
	 * 
	 * @return Uma lista contendo todos os historicos do usuario
	 */
	public List<String> getMeuHistorico() {
		return this.meuHistorico;
	}

	/**
	 * Adiciona uma atividade ao mapa de historico por cadastro
	 * 
	 * @param map
	 *            Mapa de atividades
	 */
	public void add(Map<Integer, String> map) {
		historicoPorCadastro.putAll(map);
	}

}
